/** @format */

// Modules to control application life and create native browser window
const { app, BrowserWindow } = require("electron")
const remote = require("@electron/remote/main")

const isDev = require("electron-is-dev")
const path = require("node:path")

const createWindow = () => {
	// Create the browser window.
	const mainWindow = new BrowserWindow({
		show: true,
		width: 800,
		height: 600,
		minWidth: 800,
		minHeight: 600,
		// frame: false,
		// transparent: true,
		// backgroundColor: "#00000000",
		// resizable: true,
		titleBarStyle: "hidden",
		webPreferences: {
			// webSecurity: false,
			nodeIntegration: true,
			contextIsolation: false,
			// enableRemoteModule: true,
		},
	})

	remote.initialize()
	remote.enable(mainWindow.webContents)

	const url = isDev ? "http://localhost:8888" : ""

	// 加载 index.html
	// mainWindow.loadFile("index.html")
	mainWindow.loadURL(url)

	mainWindow.on("ready-on-show", () => {
		console.log("ready-on-show")
		mainWindow.show()
	})

	// 运行自动最大化
	// mainWindow.maximize()

	// mainWindow.on("close", () => {
	// 	mainWin = null
	// })

	// 打开开发工具
	if (isDev) mainWindow.webContents.openDevTools()
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
	createWindow()

	app.on("activate", () => {
		// 在 macOS 系统内, 如果没有已开启的应用窗口
		// 点击托盘图标时通常会重新创建一个新窗口
		if (BrowserWindow.getAllWindows().length === 0) createWindow()
	})
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此, 通常
// 对应用程序和它们的菜单栏来说应该时刻保持激活状态,
// 直到用户使用 Cmd + Q 明确退出
app.on("window-all-closed", () => {
	if (process.platform !== "darwin") app.quit()
})

// 在当前文件中你可以引入所有的主进程代码
// 也可以拆分成几个文件，然后用 require 导入。
